The Internet has experienced explosive growth in recent years. The emergence of the World Wide Web has enabled millions of users around the world to easily download web pages containing text, graphics, video and sound data while at home, at work or from remote locations via wireless devices. Popular web sites may experience many thousands of visitors and requests for content each day. Such a large volume of use, however, may slow down the response time of the servers that host a popular web site, possibly causing users to abandon the requested web page and move on to another web page. This may result in lost revenue and exposure for many commercial web sites.
Many factors may contribute to the slowing of a busy server. For example, some general purpose servers, such as most UNIX-based or Microsoft WINDOWS NT-based systems, start a new process or spin a new thread from a process for each connection received. Each process or thread may be computationally expensive, requiring a large amount of processor time and memory just to launch. Therefore, during busy periods when hundreds of requests for data may be arriving simultaneously at the server, a significant amount of the server's resources may be devoted merely to launching new processes or threads, rather than to serving web resources to clients. This may slow server performance significantly.
Other operating system implementations for general purpose servers have adopted a scheduling model, in which the operating system restricts its resources to a single process at any given time. However, these implementations require the operating system scheduler to continuously poll its complete list of responsibilities in order to determine whether any of them require resource allocation. Thus, the more users that are connected to the server, the longer the list of tasks that it must poll, and the longer the polling procedure takes. This may slow the web server's ability to connect or service end users.
Several other factors may also contribute to the slowing of web servers. For example, some versions of the Transmission Control Protocol (TCP), a protocol that is typically used to control connections between a web server and a web client, include a feature known as “slow start.” Slow start is a mechanism built into TCP that is used to gauge the transmission capacity of a new connection. Whenever a new connection is established, TCP initially fulfills requests over the connection at a slow rate. The rate of transmission is then gradually increased until an optimal flow rate is achieved. For short transmissions, however, the optimal flow rate may not be attained by the time all of the data has been sent, thus slowing overall server performance.
Some versions of the Hypertext Transfer Protocol (HTTP), a protocol used to transfer web page data over a TCP connection, are able to maintain persistent connections between a client and a server. Persistent connections allow multiple requests to be sent to a server from a client via a single connection, and thus may allow the benefits of the slow start mechanism to be realized to a greater degree. However, a server that maintains persistent connections must typically manage a much larger number of open connections. This may significantly slow down server performance. Thus, many high-traffic web sites either disable persistent connections, or set a low timeout value for the connections, which effectively disables the technology.
Therefore, there remains a need for a web server connection management system capable of handling a large number of connections between a server and clients without suffering from slow response times.